// $ANTLR 3.x C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g 2013-02-07 09:19:49
package it.uniroma2.art.owlart.model.syntax.manchester;

import org.antlr.runtime.*;

import it.uniroma2.art.owlart.exceptions.ModelAccessException;
import it.uniroma2.art.owlart.exceptions.ModelUpdateException;
import it.uniroma2.art.owlart.models.OWLModel;

import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

@SuppressWarnings("all")
public class ManchOwlParserParser extends Parser {
    	OWLModel model;	public static final String[] tokenNames = new String[] {
		"<invalid>", "<EOR>", "<DOWN>", "<UP>", "AND_LABEL", "CHARS", "CHAR_CLASS", "CHAR_L", "CHAR_PROPERTY", "CHAR_U", "CLOSE_BRACE", "CLOSE_CURLY_BRACE", "COMMA", "DDOTS", "DIGITS", "DOT", "EXACTLY_LABEL", "GREATER", "GREATER_EQUAL", "INVERSE_LABEL", "LESS", "LESS_EQUAL", "MAX_LABEL", "MINUS", "MIN_LABEL", "NOT_LABEL", "ONLY_LABEL", "OPEN_BRACE", "OPEN_CURLY_BRACE", "OR_LABEL", "PLUS", "PREFIX_NAME", "SELF_LABEL", "SOME_LABEL", "SPACE", "THAT_LABEL", "UNDERSCORE", "VALUE_LABEL"
	};

	public static final int EOF=-1;
	public static final int AND_LABEL=4;
	public static final int CHARS=5;
	public static final int CHAR_CLASS=6;
	public static final int CHAR_L=7;
	public static final int CHAR_PROPERTY=8;
	public static final int CHAR_U=9;
	public static final int CLOSE_BRACE=10;
	public static final int CLOSE_CURLY_BRACE=11;
	public static final int COMMA=12;
	public static final int DDOTS=13;
	public static final int DIGITS=14;
	public static final int DOT=15;
	public static final int EXACTLY_LABEL=16;
	public static final int GREATER=17;
	public static final int GREATER_EQUAL=18;
	public static final int INVERSE_LABEL=19;
	public static final int LESS=20;
	public static final int LESS_EQUAL=21;
	public static final int MAX_LABEL=22;
	public static final int MINUS=23;
	public static final int MIN_LABEL=24;
	public static final int NOT_LABEL=25;
	public static final int ONLY_LABEL=26;
	public static final int OPEN_BRACE=27;
	public static final int OPEN_CURLY_BRACE=28;
	public static final int OR_LABEL=29;
	public static final int PLUS=30;
	public static final int PREFIX_NAME=31;
	public static final int SELF_LABEL=32;
	public static final int SOME_LABEL=33;
	public static final int SPACE=34;
	public static final int THAT_LABEL=35;
	public static final int UNDERSCORE=36;
	public static final int VALUE_LABEL=37;

	// delegates
	public Parser[] getDelegates() {
		return new Parser[] {};
	}

	// delegators


	public ManchOwlParserParser(TokenStream input) {
		this(input, new RecognizerSharedState());
	}
	public ManchOwlParserParser(TokenStream input, RecognizerSharedState state) {
		super(input, state);
		this.state.ruleMemo = new HashMap[42+1];
		 

	}

	@Override public String[] getTokenNames() { return ManchOwlParserParser.tokenNames; }
	@Override public String getGrammarFileName() { return "C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g"; }


	@Override
	public void reportError(RecognitionException e) {
		String msg = "Parser error: ";
		
		
		 msg+="line "+e.line+":"+e.charPositionInLine+" ";
	         if ( e instanceof UnwantedTokenException ) {
	               UnwantedTokenException ute = (UnwantedTokenException)e;
	               String tokenName="<unknown>";
	               if ( ute.expecting== Token.EOF ) {
	                     tokenName = "EOF";
	               }
	               else {
	                     tokenName = tokenNames[ute.expecting];
	               }
	               msg += "extraneous input "+getTokenErrorDisplay(ute.getUnexpectedToken())+
	                     " expecting "+tokenName;
	         }
	         else if ( e instanceof MissingTokenException ) {
	               MissingTokenException mte = (MissingTokenException)e;
	               String tokenName="<unknown>";
	               if ( mte.expecting== Token.EOF ) {
	                     tokenName = "EOF";
	               }
	               else {
	                     tokenName = tokenNames[mte.expecting];
	               }
	               msg += "missing "+tokenName+" at "+getTokenErrorDisplay(e.token);
	         }
	         else if ( e instanceof MismatchedTokenException ) {
	               MismatchedTokenException mte = (MismatchedTokenException)e;
	               String tokenName="<unknown>";
	               if ( mte.expecting== Token.EOF ) {
	                     tokenName = "EOF";
	               }
	               else {
	                     tokenName = tokenNames[mte.expecting];
	               }
	               msg += "mismatched input "+getTokenErrorDisplay(e.token)+
	                     " expecting "+tokenName;
	         }
	         else if ( e instanceof MismatchedTreeNodeException ) {
	               MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e;
	               String tokenName="<unknown>";
	               if ( mtne.expecting==Token.EOF ) {
	                     tokenName = "EOF";
	               }
	               else {
	                     tokenName = tokenNames[mtne.expecting];
	               }
	               msg += "mismatched tree node: "+mtne.node+
	                     " expecting "+tokenName;
	         }
	         else if ( e instanceof NoViableAltException ) {
	               //NoViableAltException nvae = (NoViableAltException)e;
	               // for development, can add "decision=<<"+nvae.grammarDecisionDescription+">>"
	               // and "(decision="+nvae.decisionNumber+") and
	               // "state "+nvae.stateNumber
	               msg += "no viable alternative at input "+getTokenErrorDisplay(e.token);
	         }
	         else if ( e instanceof EarlyExitException ) {
	               //EarlyExitException eee = (EarlyExitException)e;
	               // for development, can add "(decision="+eee.decisionNumber+")"
	               msg += "required (...)+ loop did not match anything at input "+
	                     getTokenErrorDisplay(e.token);
	         }
	         else if ( e instanceof MismatchedSetException ) {
	               MismatchedSetException mse = (MismatchedSetException)e;
	               msg += "mismatched input "+getTokenErrorDisplay(e.token)+
	                     " expecting set "+mse.expecting;
	         }
	         else if ( e instanceof MismatchedNotSetException ) {
	               MismatchedNotSetException mse = (MismatchedNotSetException)e;
	               msg += "mismatched input "+getTokenErrorDisplay(e.token)+
	                     " expecting set "+mse.expecting;
	         }
	         else if ( e instanceof FailedPredicateException ) {
	               FailedPredicateException fpe = (FailedPredicateException)e;
	               msg += "rule "+fpe.ruleName+" failed predicate: {"+
	                     fpe.predicateText+"}?";
	         }
		
		
		
		throw new IllegalArgumentException(msg);
		}





	// $ANTLR start "classExpression"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:164:1: classExpression returns [ClassExpression cl] : d= description EOF ;
	public final ClassExpression classExpression(OWLModel ontModel) throws RecognitionException, ModelUpdateException, ModelAccessException {
		ClassExpression cl = null;

		int classExpression_StartIndex = input.index();

		ObjectUnionOf d =null;


		cl=new ClassExpression(ontModel);model=cl.model;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return cl; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:171:2: (d= description EOF )
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:172:4: d= description EOF
			{
			pushFollow(FOLLOW_description_in_classExpression423);
			d=description();
			state._fsp--;
			if (state.failed) return cl;
			if ( state.backtracking==0 ) {cl.setObj(d);}
			match(input,EOF,FOLLOW_EOF_in_classExpression430); if (state.failed) return cl;
			}

			if ( state.backtracking==0 ) {
			d.createOntology();
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 1, classExpression_StartIndex); }

		}
		return cl;
	}
	// $ANTLR end "classExpression"



	// $ANTLR start "description"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:177:1: description returns [ObjectUnionOf de] : c1= conjunction ( OR_LABEL c2= conjunction )* ;
	public final ObjectUnionOf description() throws RecognitionException, ModelUpdateException, ModelAccessException {
		ObjectUnionOf de = null;

		int description_StartIndex = input.index();

		ObjectIntersectionOf c1 =null;
		ObjectIntersectionOf c2 =null;


		de = new ObjectUnionOf(model);

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return de; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:183:3: (c1= conjunction ( OR_LABEL c2= conjunction )* )
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:184:3: c1= conjunction ( OR_LABEL c2= conjunction )*
			{
			pushFollow(FOLLOW_conjunction_in_description461);
			c1=conjunction();
			state._fsp--;
			if (state.failed) return de;
			if ( state.backtracking==0 ) {de.addElement(c1);}
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:185:3: ( OR_LABEL c2= conjunction )*
			loop1:
			do {
				int alt1=2;
				int LA1_0 = input.LA(1);
				if ( (LA1_0==OR_LABEL) ) {
					alt1=1;
				}

				switch (alt1) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:185:4: OR_LABEL c2= conjunction
					{
					match(input,OR_LABEL,FOLLOW_OR_LABEL_in_description468); if (state.failed) return de;
					pushFollow(FOLLOW_conjunction_in_description472);
					c2=conjunction();
					state._fsp--;
					if (state.failed) return de;
					if ( state.backtracking==0 ) {de.addElement(c2);}
					}
					break;

				default :
					break loop1;
				}
			} while (true);

			}

			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 2, description_StartIndex); }

		}
		return de;
	}
	// $ANTLR end "description"



	// $ANTLR start "conjunction"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:189:1: conjunction returns [ObjectIntersectionOf co] : (c= classURI THAT_LABEL )? p1= primary ( AND_LABEL p2= primary )* ;
	public final ObjectIntersectionOf conjunction() throws RecognitionException, ModelUpdateException, ModelAccessException {
		ObjectIntersectionOf co = null;

		int conjunction_StartIndex = input.index();

		Uri c =null;
		Primary p1 =null;
		Primary p2 =null;


		co = new ObjectIntersectionOf(model);

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return co; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:195:3: ( (c= classURI THAT_LABEL )? p1= primary ( AND_LABEL p2= primary )* )
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:196:3: (c= classURI THAT_LABEL )? p1= primary ( AND_LABEL p2= primary )*
			{
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:196:3: (c= classURI THAT_LABEL )?
			int alt2=2;
			int LA2_0 = input.LA(1);
			if ( (LA2_0==PREFIX_NAME) ) {
				int LA2_1 = input.LA(2);
				if ( (LA2_1==CHAR_CLASS) ) {
					int LA2_4 = input.LA(3);
					if ( (LA2_4==THAT_LABEL) ) {
						alt2=1;
					}
				}
			}
			else if ( (LA2_0==CHAR_CLASS) ) {
				int LA2_2 = input.LA(2);
				if ( (LA2_2==THAT_LABEL) ) {
					alt2=1;
				}
			}
			switch (alt2) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:196:4: c= classURI THAT_LABEL
					{
					pushFollow(FOLLOW_classURI_in_conjunction508);
					c=classURI();
					state._fsp--;
					if (state.failed) return co;
					match(input,THAT_LABEL,FOLLOW_THAT_LABEL_in_conjunction510); if (state.failed) return co;
					if ( state.backtracking==0 ) {co.setUriThat(c);}
					}
					break;

			}

			pushFollow(FOLLOW_primary_in_conjunction518);
			p1=primary();
			state._fsp--;
			if (state.failed) return co;
			if ( state.backtracking==0 ) {
			            co.addPrimary(p1);}
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:198:5: ( AND_LABEL p2= primary )*
			loop3:
			do {
				int alt3=2;
				int LA3_0 = input.LA(1);
				if ( (LA3_0==AND_LABEL) ) {
					alt3=1;
				}

				switch (alt3) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:198:6: AND_LABEL p2= primary
					{
					match(input,AND_LABEL,FOLLOW_AND_LABEL_in_conjunction527); if (state.failed) return co;
					pushFollow(FOLLOW_primary_in_conjunction531);
					p2=primary();
					state._fsp--;
					if (state.failed) return co;
					if ( state.backtracking==0 ) {co.addPrimary(p2);}
					}
					break;

				default :
					break loop3;
				}
			} while (true);

			}

			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 3, conjunction_StartIndex); }

		}
		return co;
	}
	// $ANTLR end "conjunction"



	// $ANTLR start "primary"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:201:1: primary returns [Primary value] : ( (n= NOT_LABEL )? ( OPEN_BRACE v= restriction CLOSE_BRACE |v= restriction ) | (n= NOT_LABEL )? ( OPEN_BRACE v2= atomic CLOSE_BRACE |v2= atomic ) );
	public final Primary primary() throws RecognitionException, ModelUpdateException, ModelAccessException {
		Primary value = null;

		int primary_StartIndex = input.index();

		Token n=null;
		Restriction v =null;
		Atomic v2 =null;



		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:206:3: ( (n= NOT_LABEL )? ( OPEN_BRACE v= restriction CLOSE_BRACE |v= restriction ) | (n= NOT_LABEL )? ( OPEN_BRACE v2= atomic CLOSE_BRACE |v2= atomic ) )
			int alt8=2;
			switch ( input.LA(1) ) {
			case NOT_LABEL:
				{
				int LA8_1 = input.LA(2);
				if ( (synpred6_ManchOwlParser()) ) {
					alt8=1;
				}
				else if ( (true) ) {
					alt8=2;
				}
				else {
					if (state.backtracking>0) {state.failed=true; return value;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 8, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case OPEN_BRACE:
				{
				int LA8_2 = input.LA(2);
				if ( (synpred6_ManchOwlParser()) ) {
					alt8=1;
				}
				else if ( (true) ) {
					alt8=2;
				}
				else {
					if (state.backtracking>0) {state.failed=true; return value;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 8, 2, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case PREFIX_NAME:
				{
				int LA8_3 = input.LA(2);
				if ( (synpred6_ManchOwlParser()) ) {
					alt8=1;
				}
				else if ( (true) ) {
					alt8=2;
				}
				else {
					if (state.backtracking>0) {state.failed=true; return value;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 8, 3, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case CHAR_PROPERTY:
			case INVERSE_LABEL:
				{
				alt8=1;
				}
				break;
			case CHAR_CLASS:
			case OPEN_CURLY_BRACE:
				{
				alt8=2;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return value;}
				NoViableAltException nvae =
					new NoViableAltException("", 8, 0, input);
				throw nvae;
			}
			switch (alt8) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:3: (n= NOT_LABEL )? ( OPEN_BRACE v= restriction CLOSE_BRACE |v= restriction )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:3: (n= NOT_LABEL )?
					int alt4=2;
					int LA4_0 = input.LA(1);
					if ( (LA4_0==NOT_LABEL) ) {
						alt4=1;
					}
					switch (alt4) {
						case 1 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:4: n= NOT_LABEL
							{
							n=(Token)match(input,NOT_LABEL,FOLLOW_NOT_LABEL_in_primary567); if (state.failed) return value;
							}
							break;

					}

					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:18: ( OPEN_BRACE v= restriction CLOSE_BRACE |v= restriction )
					int alt5=2;
					int LA5_0 = input.LA(1);
					if ( (LA5_0==OPEN_BRACE) ) {
						alt5=1;
					}
					else if ( (LA5_0==CHAR_PROPERTY||LA5_0==INVERSE_LABEL||LA5_0==PREFIX_NAME) ) {
						alt5=2;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return value;}
						NoViableAltException nvae =
							new NoViableAltException("", 5, 0, input);
						throw nvae;
					}
					switch (alt5) {
						case 1 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:19: OPEN_BRACE v= restriction CLOSE_BRACE
							{
							match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_primary572); if (state.failed) return value;
							pushFollow(FOLLOW_restriction_in_primary576);
							v=restriction();
							state._fsp--;
							if (state.failed) return value;
							match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_primary578); if (state.failed) return value;
							}
							break;
						case 2 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:58: v= restriction
							{
							pushFollow(FOLLOW_restriction_in_primary584);
							v=restriction();
							state._fsp--;
							if (state.failed) return value;
							}
							break;

					}

					if ( state.backtracking==0 ) {
					            if(n!=null) {value= new Primary(true,v,model);}
					            else {value= new Primary(false,v,model);}
					  }
					}
					break;
				case 2 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:210:7: (n= NOT_LABEL )? ( OPEN_BRACE v2= atomic CLOSE_BRACE |v2= atomic )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:210:7: (n= NOT_LABEL )?
					int alt6=2;
					int LA6_0 = input.LA(1);
					if ( (LA6_0==NOT_LABEL) ) {
						alt6=1;
					}
					switch (alt6) {
						case 1 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:210:8: n= NOT_LABEL
							{
							n=(Token)match(input,NOT_LABEL,FOLLOW_NOT_LABEL_in_primary594); if (state.failed) return value;
							}
							break;

					}

					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:210:22: ( OPEN_BRACE v2= atomic CLOSE_BRACE |v2= atomic )
					int alt7=2;
					int LA7_0 = input.LA(1);
					if ( (LA7_0==OPEN_BRACE) ) {
						int LA7_1 = input.LA(2);
						if ( (synpred8_ManchOwlParser()) ) {
							alt7=1;
						}
						else if ( (true) ) {
							alt7=2;
						}
						else {
							if (state.backtracking>0) {state.failed=true; return value;}
							int nvaeMark = input.mark();
							try {
								input.consume();
								NoViableAltException nvae =
									new NoViableAltException("", 7, 1, input);
								throw nvae;
							} finally {
								input.rewind(nvaeMark);
							}
						}
					}
					else if ( (LA7_0==CHAR_CLASS||LA7_0==OPEN_CURLY_BRACE||LA7_0==PREFIX_NAME) ) {
						alt7=2;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return value;}
						NoViableAltException nvae =
							new NoViableAltException("", 7, 0, input);
						throw nvae;
					}
					switch (alt7) {
						case 1 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:210:23: OPEN_BRACE v2= atomic CLOSE_BRACE
							{
							match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_primary599); if (state.failed) return value;
							pushFollow(FOLLOW_atomic_in_primary603);
							v2=atomic();
							state._fsp--;
							if (state.failed) return value;
							match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_primary605); if (state.failed) return value;
							}
							break;
						case 2 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:210:58: v2= atomic
							{
							pushFollow(FOLLOW_atomic_in_primary611);
							v2=atomic();
							state._fsp--;
							if (state.failed) return value;
							}
							break;

					}

					if ( state.backtracking==0 ) {
					            if(n!=null) {value= new Primary(true,v2,model);}
					            else {value= new Primary(false,v2,model);}
					  }
					}
					break;

			}
			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 4, primary_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "primary"



	// $ANTLR start "propertyExpression"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:217:1: propertyExpression returns [Uri value] : (v= propertyURI |v= inverseProperty );
	public final Uri propertyExpression() throws RecognitionException {
		Uri value = null;

		int propertyExpression_StartIndex = input.index();

		Uri v =null;



		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:222:3: (v= propertyURI |v= inverseProperty )
			int alt9=2;
			int LA9_0 = input.LA(1);
			if ( (LA9_0==CHAR_PROPERTY||LA9_0==PREFIX_NAME) ) {
				alt9=1;
			}
			else if ( (LA9_0==INVERSE_LABEL) ) {
				alt9=2;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return value;}
				NoViableAltException nvae =
					new NoViableAltException("", 9, 0, input);
				throw nvae;
			}
			switch (alt9) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:223:3: v= propertyURI
					{
					pushFollow(FOLLOW_propertyURI_in_propertyExpression646);
					v=propertyURI();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = v;}
					}
					break;
				case 2 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:224:5: v= inverseProperty
					{
					pushFollow(FOLLOW_inverseProperty_in_propertyExpression656);
					v=inverseProperty();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = v;}
					}
					break;

			}
			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 5, propertyExpression_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "propertyExpression"



	// $ANTLR start "restriction"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:227:1: restriction returns [Restriction value] : o= propertyExpression ( (s= SOME_LABEL p= primary ) | (only= ONLY_LABEL p= primary ) | ( VALUE_LABEL i= individualURI ) | ( SELF_LABEL ) | (mi= MIN_LABEL nni= nonNegativeInteger SPACE p= primary ) | (ma= MAX_LABEL nni= nonNegativeInteger SPACE p= primary ) | (e= EXACTLY_LABEL nni= nonNegativeInteger SPACE p= primary ) | (mi= MIN_LABEL nni= nonNegativeInteger ) | (ma= MAX_LABEL nni= nonNegativeInteger ) | (e= EXACTLY_LABEL nni= nonNegativeInteger ) ) ;
	public final Restriction restriction() throws RecognitionException, ModelAccessException, ModelUpdateException {
		Restriction value = null;

		int restriction_StartIndex = input.index();

		Token s=null;
		Token only=null;
		Token mi=null;
		Token ma=null;
		Token e=null;
		Uri o =null;
		Primary p =null;
		Uri i =null;
		String nni =null;



		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:232:3: (o= propertyExpression ( (s= SOME_LABEL p= primary ) | (only= ONLY_LABEL p= primary ) | ( VALUE_LABEL i= individualURI ) | ( SELF_LABEL ) | (mi= MIN_LABEL nni= nonNegativeInteger SPACE p= primary ) | (ma= MAX_LABEL nni= nonNegativeInteger SPACE p= primary ) | (e= EXACTLY_LABEL nni= nonNegativeInteger SPACE p= primary ) | (mi= MIN_LABEL nni= nonNegativeInteger ) | (ma= MAX_LABEL nni= nonNegativeInteger ) | (e= EXACTLY_LABEL nni= nonNegativeInteger ) ) )
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:233:3: o= propertyExpression ( (s= SOME_LABEL p= primary ) | (only= ONLY_LABEL p= primary ) | ( VALUE_LABEL i= individualURI ) | ( SELF_LABEL ) | (mi= MIN_LABEL nni= nonNegativeInteger SPACE p= primary ) | (ma= MAX_LABEL nni= nonNegativeInteger SPACE p= primary ) | (e= EXACTLY_LABEL nni= nonNegativeInteger SPACE p= primary ) | (mi= MIN_LABEL nni= nonNegativeInteger ) | (ma= MAX_LABEL nni= nonNegativeInteger ) | (e= EXACTLY_LABEL nni= nonNegativeInteger ) )
			{
			pushFollow(FOLLOW_propertyExpression_in_restriction688);
			o=propertyExpression();
			state._fsp--;
			if (state.failed) return value;
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:234:3: ( (s= SOME_LABEL p= primary ) | (only= ONLY_LABEL p= primary ) | ( VALUE_LABEL i= individualURI ) | ( SELF_LABEL ) | (mi= MIN_LABEL nni= nonNegativeInteger SPACE p= primary ) | (ma= MAX_LABEL nni= nonNegativeInteger SPACE p= primary ) | (e= EXACTLY_LABEL nni= nonNegativeInteger SPACE p= primary ) | (mi= MIN_LABEL nni= nonNegativeInteger ) | (ma= MAX_LABEL nni= nonNegativeInteger ) | (e= EXACTLY_LABEL nni= nonNegativeInteger ) )
			int alt10=10;
			switch ( input.LA(1) ) {
			case SOME_LABEL:
				{
				alt10=1;
				}
				break;
			case ONLY_LABEL:
				{
				alt10=2;
				}
				break;
			case VALUE_LABEL:
				{
				alt10=3;
				}
				break;
			case SELF_LABEL:
				{
				alt10=4;
				}
				break;
			case MIN_LABEL:
				{
				int LA10_5 = input.LA(2);
				if ( (LA10_5==DIGITS) ) {
					int LA10_8 = input.LA(3);
					if ( (LA10_8==SPACE) ) {
						alt10=5;
					}
					else if ( (LA10_8==EOF||LA10_8==AND_LABEL||LA10_8==CLOSE_BRACE||LA10_8==OR_LABEL) ) {
						alt10=8;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return value;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++)
								input.consume();
							NoViableAltException nvae =
								new NoViableAltException("", 10, 8, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
				}
				else {
					if (state.backtracking>0) {state.failed=true; return value;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 10, 5, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case MAX_LABEL:
				{
				int LA10_6 = input.LA(2);
				if ( (LA10_6==DIGITS) ) {
					int LA10_9 = input.LA(3);
					if ( (LA10_9==SPACE) ) {
						alt10=6;
					}
					else if ( (LA10_9==EOF||LA10_9==AND_LABEL||LA10_9==CLOSE_BRACE||LA10_9==OR_LABEL) ) {
						alt10=9;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return value;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++)
								input.consume();
							NoViableAltException nvae =
								new NoViableAltException("", 10, 9, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
				}
				else {
					if (state.backtracking>0) {state.failed=true; return value;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 10, 6, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case EXACTLY_LABEL:
				{
				int LA10_7 = input.LA(2);
				if ( (LA10_7==DIGITS) ) {
					int LA10_10 = input.LA(3);
					if ( (LA10_10==SPACE) ) {
						alt10=7;
					}
					else if ( (LA10_10==EOF||LA10_10==AND_LABEL||LA10_10==CLOSE_BRACE||LA10_10==OR_LABEL) ) {
						alt10=10;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return value;}
						int nvaeMark = input.mark();
						try {
							for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++)
								input.consume();
							NoViableAltException nvae =
								new NoViableAltException("", 10, 10, input);
							throw nvae;
						} finally {
							input.rewind(nvaeMark);
						}
					}
				}
				else {
					if (state.backtracking>0) {state.failed=true; return value;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 10, 7, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return value;}
				NoViableAltException nvae =
					new NoViableAltException("", 10, 0, input);
				throw nvae;
			}
			switch (alt10) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:234:7: (s= SOME_LABEL p= primary )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:234:7: (s= SOME_LABEL p= primary )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:234:8: s= SOME_LABEL p= primary
					{
					s=(Token)match(input,SOME_LABEL,FOLLOW_SOME_LABEL_in_restriction699); if (state.failed) return value;
					pushFollow(FOLLOW_primary_in_restriction703);
					p=primary();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(s.getText(),p,o.uriRes,model);}
					}

					}
					break;
				case 2 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:235:7: (only= ONLY_LABEL p= primary )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:235:7: (only= ONLY_LABEL p= primary )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:235:8: only= ONLY_LABEL p= primary
					{
					only=(Token)match(input,ONLY_LABEL,FOLLOW_ONLY_LABEL_in_restriction717); if (state.failed) return value;
					pushFollow(FOLLOW_primary_in_restriction721);
					p=primary();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(only.getText(),p,o.uriRes,model);}
					}

					}
					break;
				case 3 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:236:7: ( VALUE_LABEL i= individualURI )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:236:7: ( VALUE_LABEL i= individualURI )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:236:8: VALUE_LABEL i= individualURI
					{
					match(input,VALUE_LABEL,FOLLOW_VALUE_LABEL_in_restriction733); if (state.failed) return value;
					pushFollow(FOLLOW_individualURI_in_restriction737);
					i=individualURI();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(i,o.uriRes,model);}
					}

					}
					break;
				case 4 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:237:7: ( SELF_LABEL )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:237:7: ( SELF_LABEL )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:237:8: SELF_LABEL
					{
					match(input,SELF_LABEL,FOLLOW_SELF_LABEL_in_restriction749); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(o.uriRes,model);}
					}

					}
					break;
				case 5 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:238:7: (mi= MIN_LABEL nni= nonNegativeInteger SPACE p= primary )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:238:7: (mi= MIN_LABEL nni= nonNegativeInteger SPACE p= primary )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:238:8: mi= MIN_LABEL nni= nonNegativeInteger SPACE p= primary
					{
					mi=(Token)match(input,MIN_LABEL,FOLLOW_MIN_LABEL_in_restriction763); if (state.failed) return value;
					pushFollow(FOLLOW_nonNegativeInteger_in_restriction767);
					nni=nonNegativeInteger();
					state._fsp--;
					if (state.failed) return value;
					match(input,SPACE,FOLLOW_SPACE_in_restriction769); if (state.failed) return value;
					pushFollow(FOLLOW_primary_in_restriction773);
					p=primary();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(mi.getText(),nni,p,o.uriRes,model);}
					}

					}
					break;
				case 6 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:239:7: (ma= MAX_LABEL nni= nonNegativeInteger SPACE p= primary )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:239:7: (ma= MAX_LABEL nni= nonNegativeInteger SPACE p= primary )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:239:8: ma= MAX_LABEL nni= nonNegativeInteger SPACE p= primary
					{
					ma=(Token)match(input,MAX_LABEL,FOLLOW_MAX_LABEL_in_restriction787); if (state.failed) return value;
					pushFollow(FOLLOW_nonNegativeInteger_in_restriction791);
					nni=nonNegativeInteger();
					state._fsp--;
					if (state.failed) return value;
					match(input,SPACE,FOLLOW_SPACE_in_restriction793); if (state.failed) return value;
					pushFollow(FOLLOW_primary_in_restriction797);
					p=primary();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(ma.getText(),nni,p,o.uriRes,model);}
					}

					}
					break;
				case 7 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:240:7: (e= EXACTLY_LABEL nni= nonNegativeInteger SPACE p= primary )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:240:7: (e= EXACTLY_LABEL nni= nonNegativeInteger SPACE p= primary )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:240:8: e= EXACTLY_LABEL nni= nonNegativeInteger SPACE p= primary
					{
					e=(Token)match(input,EXACTLY_LABEL,FOLLOW_EXACTLY_LABEL_in_restriction811); if (state.failed) return value;
					pushFollow(FOLLOW_nonNegativeInteger_in_restriction815);
					nni=nonNegativeInteger();
					state._fsp--;
					if (state.failed) return value;
					match(input,SPACE,FOLLOW_SPACE_in_restriction817); if (state.failed) return value;
					pushFollow(FOLLOW_primary_in_restriction821);
					p=primary();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(e.getText(),nni,p,o.uriRes,model);}
					}

					}
					break;
				case 8 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:241:7: (mi= MIN_LABEL nni= nonNegativeInteger )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:241:7: (mi= MIN_LABEL nni= nonNegativeInteger )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:241:8: mi= MIN_LABEL nni= nonNegativeInteger
					{
					mi=(Token)match(input,MIN_LABEL,FOLLOW_MIN_LABEL_in_restriction835); if (state.failed) return value;
					pushFollow(FOLLOW_nonNegativeInteger_in_restriction839);
					nni=nonNegativeInteger();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(mi.getText(),nni,o.uriRes,model);}
					}

					}
					break;
				case 9 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:242:7: (ma= MAX_LABEL nni= nonNegativeInteger )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:242:7: (ma= MAX_LABEL nni= nonNegativeInteger )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:242:8: ma= MAX_LABEL nni= nonNegativeInteger
					{
					ma=(Token)match(input,MAX_LABEL,FOLLOW_MAX_LABEL_in_restriction853); if (state.failed) return value;
					pushFollow(FOLLOW_nonNegativeInteger_in_restriction857);
					nni=nonNegativeInteger();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(ma.getText(),nni,o.uriRes,model);}
					}

					}
					break;
				case 10 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:243:7: (e= EXACTLY_LABEL nni= nonNegativeInteger )
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:243:7: (e= EXACTLY_LABEL nni= nonNegativeInteger )
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:243:8: e= EXACTLY_LABEL nni= nonNegativeInteger
					{
					e=(Token)match(input,EXACTLY_LABEL,FOLLOW_EXACTLY_LABEL_in_restriction871); if (state.failed) return value;
					pushFollow(FOLLOW_nonNegativeInteger_in_restriction875);
					nni=nonNegativeInteger();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Restriction(e.getText(),nni,o.uriRes,model);}
					}

					}
					break;

			}

			}

			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 6, restriction_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "restriction"



	// $ANTLR start "atomic"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:246:1: atomic returns [Atomic value] : (u= classURI | OPEN_CURLY_BRACE i= individualList CLOSE_CURLY_BRACE | ( OPEN_BRACE or= description CLOSE_BRACE )+ );
	public final Atomic atomic() throws RecognitionException, ModelUpdateException, ModelAccessException {
		Atomic value = null;

		int atomic_StartIndex = input.index();

		Uri u =null;
		IndividualList i =null;
		ObjectUnionOf or =null;



		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:251:3: (u= classURI | OPEN_CURLY_BRACE i= individualList CLOSE_CURLY_BRACE | ( OPEN_BRACE or= description CLOSE_BRACE )+ )
			int alt12=3;
			switch ( input.LA(1) ) {
			case CHAR_CLASS:
			case PREFIX_NAME:
				{
				alt12=1;
				}
				break;
			case OPEN_CURLY_BRACE:
				{
				alt12=2;
				}
				break;
			case OPEN_BRACE:
				{
				alt12=3;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return value;}
				NoViableAltException nvae =
					new NoViableAltException("", 12, 0, input);
				throw nvae;
			}
			switch (alt12) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:252:3: u= classURI
					{
					pushFollow(FOLLOW_classURI_in_atomic909);
					u=classURI();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value=new Atomic(u,model);}
					}
					break;
				case 2 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:253:5: OPEN_CURLY_BRACE i= individualList CLOSE_CURLY_BRACE
					{
					match(input,OPEN_CURLY_BRACE,FOLLOW_OPEN_CURLY_BRACE_in_atomic917); if (state.failed) return value;
					pushFollow(FOLLOW_individualList_in_atomic921);
					i=individualList();
					state._fsp--;
					if (state.failed) return value;
					match(input,CLOSE_CURLY_BRACE,FOLLOW_CLOSE_CURLY_BRACE_in_atomic923); if (state.failed) return value;
					if ( state.backtracking==0 ) {value=new Atomic(i,model);}
					}
					break;
				case 3 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:254:5: ( OPEN_BRACE or= description CLOSE_BRACE )+
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:254:5: ( OPEN_BRACE or= description CLOSE_BRACE )+
					int cnt11=0;
					loop11:
					do {
						int alt11=2;
						int LA11_0 = input.LA(1);
						if ( (LA11_0==OPEN_BRACE) ) {
							alt11=1;
						}

						switch (alt11) {
						case 1 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:254:6: OPEN_BRACE or= description CLOSE_BRACE
							{
							match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_atomic932); if (state.failed) return value;
							pushFollow(FOLLOW_description_in_atomic937);
							or=description();
							state._fsp--;
							if (state.failed) return value;
							if ( state.backtracking==0 ) {value=new Atomic(or,model);}
							match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_atomic941); if (state.failed) return value;
							}
							break;

						default :
							if ( cnt11 >= 1 ) break loop11;
							if (state.backtracking>0) {state.failed=true; return value;}
								EarlyExitException eee =
									new EarlyExitException(11, input);
								throw eee;
						}
						cnt11++;
					} while (true);

					}
					break;

			}
			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 7, atomic_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "atomic"



	// $ANTLR start "classURI"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:257:1: classURI returns [Uri value] : (p= PREFIX_NAME v= CHAR_CLASS |v= CHAR_CLASS );
	public final Uri classURI() throws RecognitionException {
		Uri value = null;

		int classURI_StartIndex = input.index();

		Token p=null;
		Token v=null;



		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:262:3: (p= PREFIX_NAME v= CHAR_CLASS |v= CHAR_CLASS )
			int alt13=2;
			int LA13_0 = input.LA(1);
			if ( (LA13_0==PREFIX_NAME) ) {
				alt13=1;
			}
			else if ( (LA13_0==CHAR_CLASS) ) {
				alt13=2;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return value;}
				NoViableAltException nvae =
					new NoViableAltException("", 13, 0, input);
				throw nvae;
			}
			switch (alt13) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:262:5: p= PREFIX_NAME v= CHAR_CLASS
					{
					p=(Token)match(input,PREFIX_NAME,FOLLOW_PREFIX_NAME_in_classURI972); if (state.failed) return value;
					v=(Token)match(input,CHAR_CLASS,FOLLOW_CHAR_CLASS_in_classURI977); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Uri(p.getText()+v.getText(),model);}
					}
					break;
				case 2 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:263:6: v= CHAR_CLASS
					{
					v=(Token)match(input,CHAR_CLASS,FOLLOW_CHAR_CLASS_in_classURI988); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Uri(v.getText(),model);}
					}
					break;

			}
			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 8, classURI_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "classURI"



	// $ANTLR start "individualList"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:267:1: individualList returns [IndividualList value] : i= individualURI ( ( ( COMMA SPACE ) | COMMA | SPACE ) i1= individualURI )* ;
	public final IndividualList individualList() throws RecognitionException {
		IndividualList value = null;

		int individualList_StartIndex = input.index();

		Uri i =null;
		Uri i1 =null;


		value=new IndividualList(model);

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:273:3: (i= individualURI ( ( ( COMMA SPACE ) | COMMA | SPACE ) i1= individualURI )* )
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:274:3: i= individualURI ( ( ( COMMA SPACE ) | COMMA | SPACE ) i1= individualURI )*
			{
			pushFollow(FOLLOW_individualURI_in_individualList1023);
			i=individualURI();
			state._fsp--;
			if (state.failed) return value;
			if ( state.backtracking==0 ) {value.addElement(i);}
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:275:5: ( ( ( COMMA SPACE ) | COMMA | SPACE ) i1= individualURI )*
			loop15:
			do {
				int alt15=2;
				int LA15_0 = input.LA(1);
				if ( (LA15_0==COMMA||LA15_0==SPACE) ) {
					alt15=1;
				}

				switch (alt15) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:275:6: ( ( COMMA SPACE ) | COMMA | SPACE ) i1= individualURI
					{
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:275:6: ( ( COMMA SPACE ) | COMMA | SPACE )
					int alt14=3;
					int LA14_0 = input.LA(1);
					if ( (LA14_0==COMMA) ) {
						int LA14_1 = input.LA(2);
						if ( (LA14_1==SPACE) ) {
							alt14=1;
						}
						else if ( (LA14_1==CHAR_CLASS||LA14_1==CHAR_PROPERTY||LA14_1==PREFIX_NAME) ) {
							alt14=2;
						}
						else {
							if (state.backtracking>0) {state.failed=true; return value;}
							int nvaeMark = input.mark();
							try {
								input.consume();
								NoViableAltException nvae =
									new NoViableAltException("", 14, 1, input);
								throw nvae;
							} finally {
								input.rewind(nvaeMark);
							}
						}
					}
					else if ( (LA14_0==SPACE) ) {
						alt14=3;
					}
					else {
						if (state.backtracking>0) {state.failed=true; return value;}
						NoViableAltException nvae =
							new NoViableAltException("", 14, 0, input);
						throw nvae;
					}
					switch (alt14) {
						case 1 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:275:7: ( COMMA SPACE )
							{
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:275:7: ( COMMA SPACE )
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:275:8: COMMA SPACE
							{
							match(input,COMMA,FOLLOW_COMMA_in_individualList1034); if (state.failed) return value;
							match(input,SPACE,FOLLOW_SPACE_in_individualList1036); if (state.failed) return value;
							}

							}
							break;
						case 2 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:275:21: COMMA
							{
							match(input,COMMA,FOLLOW_COMMA_in_individualList1039); if (state.failed) return value;
							}
							break;
						case 3 :
							// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:275:27: SPACE
							{
							match(input,SPACE,FOLLOW_SPACE_in_individualList1041); if (state.failed) return value;
							}
							break;

					}

					pushFollow(FOLLOW_individualURI_in_individualList1047);
					i1=individualURI();
					state._fsp--;
					if (state.failed) return value;
					if ( state.backtracking==0 ) {value.addElement(i1);}
					}
					break;

				default :
					break loop15;
				}
			} while (true);

			}

			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 9, individualList_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "individualList"



	// $ANTLR start "nonNegativeInteger"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:279:1: nonNegativeInteger returns [String value] : d= DIGITS ;
	public final String nonNegativeInteger() throws RecognitionException {
		String value = null;

		int nonNegativeInteger_StartIndex = input.index();

		Token d=null;

		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:280:3: (d= DIGITS )
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:281:3: d= DIGITS
			{
			d=(Token)match(input,DIGITS,FOLLOW_DIGITS_in_nonNegativeInteger1073); if (state.failed) return value;
			if ( state.backtracking==0 ) {value = d.getText();}
			}

		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 10, nonNegativeInteger_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "nonNegativeInteger"



	// $ANTLR start "propertyURI"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:284:1: propertyURI returns [Uri value] : (p= PREFIX_NAME v= CHAR_PROPERTY |v= CHAR_PROPERTY );
	public final Uri propertyURI() throws RecognitionException {
		Uri value = null;

		int propertyURI_StartIndex = input.index();

		Token p=null;
		Token v=null;



		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:289:3: (p= PREFIX_NAME v= CHAR_PROPERTY |v= CHAR_PROPERTY )
			int alt16=2;
			int LA16_0 = input.LA(1);
			if ( (LA16_0==PREFIX_NAME) ) {
				alt16=1;
			}
			else if ( (LA16_0==CHAR_PROPERTY) ) {
				alt16=2;
			}
			else {
				if (state.backtracking>0) {state.failed=true; return value;}
				NoViableAltException nvae =
					new NoViableAltException("", 16, 0, input);
				throw nvae;
			}
			switch (alt16) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:289:5: p= PREFIX_NAME v= CHAR_PROPERTY
					{
					p=(Token)match(input,PREFIX_NAME,FOLLOW_PREFIX_NAME_in_propertyURI1102); if (state.failed) return value;
					v=(Token)match(input,CHAR_PROPERTY,FOLLOW_CHAR_PROPERTY_in_propertyURI1107); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Uri(p.getText()+v.getText(),model);}
					}
					break;
				case 2 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:290:5: v= CHAR_PROPERTY
					{
					v=(Token)match(input,CHAR_PROPERTY,FOLLOW_CHAR_PROPERTY_in_propertyURI1117); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Uri(v.getText(),model);}
					}
					break;

			}
			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 11, propertyURI_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "propertyURI"



	// $ANTLR start "inverseProperty"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:293:1: inverseProperty returns [Uri value] : INVERSE_LABEL u= propertyURI ;
	public final Uri inverseProperty() throws RecognitionException {
		Uri value = null;

		int inverseProperty_StartIndex = input.index();

		Uri u =null;



		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:298:3: ( INVERSE_LABEL u= propertyURI )
			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:299:3: INVERSE_LABEL u= propertyURI
			{
			match(input,INVERSE_LABEL,FOLLOW_INVERSE_LABEL_in_inverseProperty1146); if (state.failed) return value;
			pushFollow(FOLLOW_propertyURI_in_inverseProperty1150);
			u=propertyURI();
			state._fsp--;
			if (state.failed) return value;
			if ( state.backtracking==0 ) {
			            value = u;
			            value.setInverseProp();}
			}

			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 12, inverseProperty_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "inverseProperty"



	// $ANTLR start "individualURI"
	// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:304:1: individualURI returns [Uri value] : (p= PREFIX_NAME v= CHAR_CLASS |v= CHAR_CLASS |p= PREFIX_NAME v= CHAR_PROPERTY |v= CHAR_PROPERTY );
	public final Uri individualURI() throws RecognitionException {
		Uri value = null;

		int individualURI_StartIndex = input.index();

		Token p=null;
		Token v=null;



		try {
			if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return value; }

			// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:309:3: (p= PREFIX_NAME v= CHAR_CLASS |v= CHAR_CLASS |p= PREFIX_NAME v= CHAR_PROPERTY |v= CHAR_PROPERTY )
			int alt17=4;
			switch ( input.LA(1) ) {
			case PREFIX_NAME:
				{
				int LA17_1 = input.LA(2);
				if ( (LA17_1==CHAR_CLASS) ) {
					alt17=1;
				}
				else if ( (LA17_1==CHAR_PROPERTY) ) {
					alt17=3;
				}
				else {
					if (state.backtracking>0) {state.failed=true; return value;}
					int nvaeMark = input.mark();
					try {
						input.consume();
						NoViableAltException nvae =
							new NoViableAltException("", 17, 1, input);
						throw nvae;
					} finally {
						input.rewind(nvaeMark);
					}
				}
				}
				break;
			case CHAR_CLASS:
				{
				alt17=2;
				}
				break;
			case CHAR_PROPERTY:
				{
				alt17=4;
				}
				break;
			default:
				if (state.backtracking>0) {state.failed=true; return value;}
				NoViableAltException nvae =
					new NoViableAltException("", 17, 0, input);
				throw nvae;
			}
			switch (alt17) {
				case 1 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:309:5: p= PREFIX_NAME v= CHAR_CLASS
					{
					p=(Token)match(input,PREFIX_NAME,FOLLOW_PREFIX_NAME_in_individualURI1183); if (state.failed) return value;
					v=(Token)match(input,CHAR_CLASS,FOLLOW_CHAR_CLASS_in_individualURI1188); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Uri(p.getText()+v.getText(),model);}
					}
					break;
				case 2 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:310:6: v= CHAR_CLASS
					{
					v=(Token)match(input,CHAR_CLASS,FOLLOW_CHAR_CLASS_in_individualURI1199); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Uri(v.getText(),model);}
					}
					break;
				case 3 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:311:5: p= PREFIX_NAME v= CHAR_PROPERTY
					{
					p=(Token)match(input,PREFIX_NAME,FOLLOW_PREFIX_NAME_in_individualURI1210); if (state.failed) return value;
					v=(Token)match(input,CHAR_PROPERTY,FOLLOW_CHAR_PROPERTY_in_individualURI1215); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Uri(p.getText()+v.getText(),model);}
					}
					break;
				case 4 :
					// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:312:6: v= CHAR_PROPERTY
					{
					v=(Token)match(input,CHAR_PROPERTY,FOLLOW_CHAR_PROPERTY_in_individualURI1226); if (state.failed) return value;
					if ( state.backtracking==0 ) {value = new Uri(v.getText(),model);}
					}
					break;

			}
			if ( state.backtracking==0 ) {
			}
		}
		catch (RecognitionException re) {
			reportError(re);
			recover(input,re);
		}
		finally {
			// do for sure before leaving
			if ( state.backtracking>0 ) { memoize(input, 13, individualURI_StartIndex); }

		}
		return value;
	}
	// $ANTLR end "individualURI"

	// $ANTLR start synpred6_ManchOwlParser
	public final void synpred6_ManchOwlParser_fragment() throws RecognitionException, ModelAccessException, ModelUpdateException {
		Token n=null;
		Restriction v =null;

		// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:3: ( (n= NOT_LABEL )? ( OPEN_BRACE v= restriction CLOSE_BRACE |v= restriction ) )
		// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:3: (n= NOT_LABEL )? ( OPEN_BRACE v= restriction CLOSE_BRACE |v= restriction )
		{
		// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:3: (n= NOT_LABEL )?
		int alt18=2;
		int LA18_0 = input.LA(1);
		if ( (LA18_0==NOT_LABEL) ) {
			alt18=1;
		}
		switch (alt18) {
			case 1 :
				// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:4: n= NOT_LABEL
				{
				n=(Token)match(input,NOT_LABEL,FOLLOW_NOT_LABEL_in_synpred6_ManchOwlParser567); if (state.failed) return ;
				}
				break;

		}

		// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:18: ( OPEN_BRACE v= restriction CLOSE_BRACE |v= restriction )
		int alt19=2;
		int LA19_0 = input.LA(1);
		if ( (LA19_0==OPEN_BRACE) ) {
			alt19=1;
		}
		else if ( (LA19_0==CHAR_PROPERTY||LA19_0==INVERSE_LABEL||LA19_0==PREFIX_NAME) ) {
			alt19=2;
		}
		else {
			if (state.backtracking>0) {state.failed=true; return ;}
			NoViableAltException nvae =
				new NoViableAltException("", 19, 0, input);
			throw nvae;
		}
		switch (alt19) {
			case 1 :
				// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:19: OPEN_BRACE v= restriction CLOSE_BRACE
				{
				match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_synpred6_ManchOwlParser572); if (state.failed) return ;
				pushFollow(FOLLOW_restriction_in_synpred6_ManchOwlParser576);
				v=restriction();
				state._fsp--;
				if (state.failed) return ;
				match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_synpred6_ManchOwlParser578); if (state.failed) return ;
				}
				break;
			case 2 :
				// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:207:58: v= restriction
				{
				pushFollow(FOLLOW_restriction_in_synpred6_ManchOwlParser584);
				v=restriction();
				state._fsp--;
				if (state.failed) return ;
				}
				break;

		}

		}

	}
	// $ANTLR end synpred6_ManchOwlParser

	// $ANTLR start synpred8_ManchOwlParser
	public final void synpred8_ManchOwlParser_fragment() throws RecognitionException, ModelUpdateException, ModelAccessException {
		Atomic v2 =null;

		// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:210:23: ( OPEN_BRACE v2= atomic CLOSE_BRACE )
		// C:\\Users\\Alfonso\\Documents\\Documenti ingegneria\\Tesi\\AntlerResource\\ManchOwlParser.g:210:23: OPEN_BRACE v2= atomic CLOSE_BRACE
		{
		match(input,OPEN_BRACE,FOLLOW_OPEN_BRACE_in_synpred8_ManchOwlParser599); if (state.failed) return ;
		pushFollow(FOLLOW_atomic_in_synpred8_ManchOwlParser603);
		v2=atomic();
		state._fsp--;
		if (state.failed) return ;
		match(input,CLOSE_BRACE,FOLLOW_CLOSE_BRACE_in_synpred8_ManchOwlParser605); if (state.failed) return ;
		}

	}
	// $ANTLR end synpred8_ManchOwlParser

	// Delegated rules

	public final boolean synpred6_ManchOwlParser() throws ModelAccessException, ModelUpdateException {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred6_ManchOwlParser_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}
	public final boolean synpred8_ManchOwlParser() throws ModelUpdateException, ModelAccessException {
		state.backtracking++;
		int start = input.mark();
		try {
			synpred8_ManchOwlParser_fragment(); // can never throw exception
		} catch (RecognitionException re) {
			System.err.println("impossible: "+re);
		}
		boolean success = !state.failed;
		input.rewind(start);
		state.backtracking--;
		state.failed=false;
		return success;
	}



	public static final BitSet FOLLOW_description_in_classExpression423 = new BitSet(new long[]{0x0000000000000000L});
	public static final BitSet FOLLOW_EOF_in_classExpression430 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_conjunction_in_description461 = new BitSet(new long[]{0x0000000020000002L});
	public static final BitSet FOLLOW_OR_LABEL_in_description468 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_conjunction_in_description472 = new BitSet(new long[]{0x0000000020000002L});
	public static final BitSet FOLLOW_classURI_in_conjunction508 = new BitSet(new long[]{0x0000000800000000L});
	public static final BitSet FOLLOW_THAT_LABEL_in_conjunction510 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_primary_in_conjunction518 = new BitSet(new long[]{0x0000000000000012L});
	public static final BitSet FOLLOW_AND_LABEL_in_conjunction527 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_primary_in_conjunction531 = new BitSet(new long[]{0x0000000000000012L});
	public static final BitSet FOLLOW_NOT_LABEL_in_primary567 = new BitSet(new long[]{0x0000000088080100L});
	public static final BitSet FOLLOW_OPEN_BRACE_in_primary572 = new BitSet(new long[]{0x0000000080080100L});
	public static final BitSet FOLLOW_restriction_in_primary576 = new BitSet(new long[]{0x0000000000000400L});
	public static final BitSet FOLLOW_CLOSE_BRACE_in_primary578 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_restriction_in_primary584 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_NOT_LABEL_in_primary594 = new BitSet(new long[]{0x0000000098000040L});
	public static final BitSet FOLLOW_OPEN_BRACE_in_primary599 = new BitSet(new long[]{0x0000000098000040L});
	public static final BitSet FOLLOW_atomic_in_primary603 = new BitSet(new long[]{0x0000000000000400L});
	public static final BitSet FOLLOW_CLOSE_BRACE_in_primary605 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_atomic_in_primary611 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_propertyURI_in_propertyExpression646 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_inverseProperty_in_propertyExpression656 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_propertyExpression_in_restriction688 = new BitSet(new long[]{0x0000002305410000L});
	public static final BitSet FOLLOW_SOME_LABEL_in_restriction699 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_primary_in_restriction703 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_ONLY_LABEL_in_restriction717 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_primary_in_restriction721 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_VALUE_LABEL_in_restriction733 = new BitSet(new long[]{0x0000000080000140L});
	public static final BitSet FOLLOW_individualURI_in_restriction737 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_SELF_LABEL_in_restriction749 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MIN_LABEL_in_restriction763 = new BitSet(new long[]{0x0000000000004000L});
	public static final BitSet FOLLOW_nonNegativeInteger_in_restriction767 = new BitSet(new long[]{0x0000000400000000L});
	public static final BitSet FOLLOW_SPACE_in_restriction769 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_primary_in_restriction773 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MAX_LABEL_in_restriction787 = new BitSet(new long[]{0x0000000000004000L});
	public static final BitSet FOLLOW_nonNegativeInteger_in_restriction791 = new BitSet(new long[]{0x0000000400000000L});
	public static final BitSet FOLLOW_SPACE_in_restriction793 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_primary_in_restriction797 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_EXACTLY_LABEL_in_restriction811 = new BitSet(new long[]{0x0000000000004000L});
	public static final BitSet FOLLOW_nonNegativeInteger_in_restriction815 = new BitSet(new long[]{0x0000000400000000L});
	public static final BitSet FOLLOW_SPACE_in_restriction817 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_primary_in_restriction821 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MIN_LABEL_in_restriction835 = new BitSet(new long[]{0x0000000000004000L});
	public static final BitSet FOLLOW_nonNegativeInteger_in_restriction839 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_MAX_LABEL_in_restriction853 = new BitSet(new long[]{0x0000000000004000L});
	public static final BitSet FOLLOW_nonNegativeInteger_in_restriction857 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_EXACTLY_LABEL_in_restriction871 = new BitSet(new long[]{0x0000000000004000L});
	public static final BitSet FOLLOW_nonNegativeInteger_in_restriction875 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_classURI_in_atomic909 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OPEN_CURLY_BRACE_in_atomic917 = new BitSet(new long[]{0x0000000080000140L});
	public static final BitSet FOLLOW_individualList_in_atomic921 = new BitSet(new long[]{0x0000000000000800L});
	public static final BitSet FOLLOW_CLOSE_CURLY_BRACE_in_atomic923 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OPEN_BRACE_in_atomic932 = new BitSet(new long[]{0x000000009A080140L});
	public static final BitSet FOLLOW_description_in_atomic937 = new BitSet(new long[]{0x0000000000000400L});
	public static final BitSet FOLLOW_CLOSE_BRACE_in_atomic941 = new BitSet(new long[]{0x0000000008000002L});
	public static final BitSet FOLLOW_PREFIX_NAME_in_classURI972 = new BitSet(new long[]{0x0000000000000040L});
	public static final BitSet FOLLOW_CHAR_CLASS_in_classURI977 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_CHAR_CLASS_in_classURI988 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_individualURI_in_individualList1023 = new BitSet(new long[]{0x0000000400001002L});
	public static final BitSet FOLLOW_COMMA_in_individualList1034 = new BitSet(new long[]{0x0000000400000000L});
	public static final BitSet FOLLOW_SPACE_in_individualList1036 = new BitSet(new long[]{0x0000000080000140L});
	public static final BitSet FOLLOW_COMMA_in_individualList1039 = new BitSet(new long[]{0x0000000080000140L});
	public static final BitSet FOLLOW_SPACE_in_individualList1041 = new BitSet(new long[]{0x0000000080000140L});
	public static final BitSet FOLLOW_individualURI_in_individualList1047 = new BitSet(new long[]{0x0000000400001002L});
	public static final BitSet FOLLOW_DIGITS_in_nonNegativeInteger1073 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PREFIX_NAME_in_propertyURI1102 = new BitSet(new long[]{0x0000000000000100L});
	public static final BitSet FOLLOW_CHAR_PROPERTY_in_propertyURI1107 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_CHAR_PROPERTY_in_propertyURI1117 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_INVERSE_LABEL_in_inverseProperty1146 = new BitSet(new long[]{0x0000000080000100L});
	public static final BitSet FOLLOW_propertyURI_in_inverseProperty1150 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PREFIX_NAME_in_individualURI1183 = new BitSet(new long[]{0x0000000000000040L});
	public static final BitSet FOLLOW_CHAR_CLASS_in_individualURI1188 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_CHAR_CLASS_in_individualURI1199 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_PREFIX_NAME_in_individualURI1210 = new BitSet(new long[]{0x0000000000000100L});
	public static final BitSet FOLLOW_CHAR_PROPERTY_in_individualURI1215 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_CHAR_PROPERTY_in_individualURI1226 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_NOT_LABEL_in_synpred6_ManchOwlParser567 = new BitSet(new long[]{0x0000000088080100L});
	public static final BitSet FOLLOW_OPEN_BRACE_in_synpred6_ManchOwlParser572 = new BitSet(new long[]{0x0000000080080100L});
	public static final BitSet FOLLOW_restriction_in_synpred6_ManchOwlParser576 = new BitSet(new long[]{0x0000000000000400L});
	public static final BitSet FOLLOW_CLOSE_BRACE_in_synpred6_ManchOwlParser578 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_restriction_in_synpred6_ManchOwlParser584 = new BitSet(new long[]{0x0000000000000002L});
	public static final BitSet FOLLOW_OPEN_BRACE_in_synpred8_ManchOwlParser599 = new BitSet(new long[]{0x0000000098000040L});
	public static final BitSet FOLLOW_atomic_in_synpred8_ManchOwlParser603 = new BitSet(new long[]{0x0000000000000400L});
	public static final BitSet FOLLOW_CLOSE_BRACE_in_synpred8_ManchOwlParser605 = new BitSet(new long[]{0x0000000000000002L});
}
